/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package converters;
import be.AnioLectivo;
import beans.ManagedBeanAnioLectivo;
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
/**
 *
 * Sistema de Control Acádemico (saca) creado por Buñay Paulo
 */
@FacesConverter(value = "aniolectivoConverter")
public class AnioLectivoConverter implements Converter{

    
     @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        if (context == null) {
throw new NullPointerException("context");
}
if (component == null) {
throw new NullPointerException("component");
}
      FacesContext ctx = FacesContext.getCurrentInstance();
      ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(),"#{managedBeanAnioLectivo}",ManagedBeanAnioLectivo.class);
ManagedBeanAnioLectivo anioslectivos = (ManagedBeanAnioLectivo)vex.getValue(ctx.getELContext());
AnioLectivo aniolectivo;
try {
    
    
            
  aniolectivo =  anioslectivos.getAnioLectivo(new Integer(value));
} catch( NumberFormatException e ) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor Desconocido", "Este no es un Año Lectivo" );
throw new ConverterException( message );
}
if( aniolectivo == null ) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,"Valor Desconocido", "El Año Lectivo desconocido" );
throw new ConverterException( message );
}
return aniolectivo;
}



    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        
        
        FacesContext ctx = FacesContext.getCurrentInstance();
      ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(),"#{managedBeanAnioLectivo}",ManagedBeanAnioLectivo.class);
ManagedBeanAnioLectivo anioslectivos = (ManagedBeanAnioLectivo)vex.getValue(ctx.getELContext());


    if (context == null){throw new NullPointerException("context");}
if (component == null){throw new NullPointerException("component");}


if(((AnioLectivo)value).getIdAnioLectivo() == null){
    anioslectivos.llenar_myAnios();
    // este caso aplica para la primera vez que se carga el combo, cuando no se selecciona nada por defecto
    System.out.println("ID NULLO, se le va a asignar el primer año de la lista "+ anioslectivos.getAnio_lectivo().getIdAnioLectivo());
    return anioslectivos.getAnio_lectivo().getIdAnioLectivo().toString();
    }
else
{  
    // este caso aplica para cualquier otro elemento que se selecciono en el combox
return ((AnioLectivo)value).getIdAnioLectivo().toString();
}
    }
}
